Processing unit subtype configuration

ABSTRACT

An aspect includes receiving a request to boot a software image on a machine including a plurality of processing units having different characteristics. A processing unit subtype identifier is extracted from a license record for the machine. The processing unit subtype identifier includes a software image type and an allocation of the processing units of the processing unit subtype. A processing unit capability of the machine is queried. The software image is enabled with the allocation of the processing units based on verifying that a software image identifier of the software image matches the software image type from the processing unit subtype identifier, and the processing unit capability of the machine meets the allocation of the processing units from the processing unit subtype.

BACKGROUND

The present invention relates to computer systems, and moreparticularly, to processing unit subtype configuration.

Computer systems can include a variety of processing resources that canbe shared between multiple applications and/or multiple logicalpartitions. Computer systems may also support multiple operating systemsthat run in separate logical partitions. Some logical partitions may beassigned to dedicated processing resources, while other logicalpartitions may share processing resources across multiple logicalpartitions. Some logical partitions can end up with more processingresources assigned than are needed by workloads intended to be executedon the logical partitions. This inefficient allocation of resources canlimit computer system performance, as shared processing resources may beblocked from use by other logical partitions and/or applications thatcould otherwise make use of the resources.

SUMMARY

According to a non-limiting embodiment, a computer-implemented methodincludes receiving a request to boot a software image on a machineincluding a plurality of processing units having differentcharacteristics. A processing unit subtype identifier is extracted froma license record for the machine. The processing unit subtype identifierincludes a software image type and an allocation of the processing unitsof the processing unit subtype. A processing unit capability of themachine is queried. The software image is enabled with the allocation ofthe processing units based on verifying that a software image identifierof the software image matches the software image type from theprocessing unit subtype identifier, and the processing unit capabilityof the machine meets the allocation of the processing units from theprocessing unit subtype. Advantages can include allocating sufficientprocessing resources to support execution of a particular software imageand retaining processing unit capability for execution of additionalsoftware images.

In addition to one or more of the features described above, or as analternative to any of the foregoing embodiments, further embodiments mayinclude adjusting an indicator of overall available processing units ofthe machine based on the allocation of the processing units with aplurality of deployed software images. Advantages can include trackingmachine-level resource availability of processing units as deploymentreduces available resources.

In addition to one or more of the features described above, or as analternative to any of the foregoing embodiments, further embodiments mayinclude adjusting an indicator of enablement availability of thesoftware image type of the processing units based on deploying thesoftware image. Advantages can include tracking availability ofprocessing units for specific software image types.

In addition to one or more of the features described above, or as analternative to any of the foregoing embodiments, further embodiments mayinclude where the processing units include one or more of processorchips, memory resources, disk resources, and input/output cardresources. Advantages can include allocating multiple types ofprocessing resources.

In addition to one or more of the features described above, or as analternative to any of the foregoing embodiments, further embodiments mayinclude where the processing unit capability of the machine is sharedacross a plurality of logical partitions, and the software image and oneor more other workloads are configured to execute in separate logicalpartitions. Advantages can include sharing of processing unitcapabilities across multiple logical partitions.

In addition to one or more of the features described above, or as analternative to any of the foregoing embodiments, further embodiments mayinclude installing the license record on the machine responsive toreceiving the software image and license record data, creating aprocessing unit subtype pool identifier on the machine that associatesthe allocation of the processing units with the software image type, andcreating a logical partition pool that makes the processing unit subtypepool identifier and one or more identifiers associated with one or moreother workloads available for selection in the logical partitions.Advantages can include making multiple types of logical partitionsavailable.

In addition to one or more of the features described above, or as analternative to any of the foregoing embodiments, further embodiments mayinclude where the license record data associates the software imageidentifier, the allocation of the processing units, a duration, and anidentifier of the machine responsive to a data exchange between aplurality of entities. Advantages can include constraining multipleparameters of software image deployment.

According to a non-limiting embodiment, a system includes a plurality ofprocessing units on a machine, the processing units having differentcharacteristics. The system also includes a processing circuitconfigured to perform a plurality of operations including receiving arequest to boot a software image on the machine and extracting aprocessing unit subtype identifier from a license record for themachine. The processing unit subtype identifier includes a softwareimage type and an allocation of the processing units of a processingunit subtype. The processing circuit is further configured to performoperations including querying a processing unit capability of themachine and enabling the software image with the allocation of theprocessing units based on verifying that a software image identifier ofthe software image matches the software image type from the processingunit subtype identifier and the processing unit capability of themachine meets the allocation of the processing units from the processingunit subtype. Advantages can include allocating sufficient processingresources to support execution of a particular software image andretaining processing unit capability for execution of additionalsoftware images.

According to a non-limiting embodiment, a computer program productincludes a computer readable storage medium having program instructionsembodied therewith. The program instructions are executable by aprocessing circuit to perform a plurality of operations includingreceiving a request to boot a software image on a machine including aplurality of processing units having different characteristics andextracting a processing unit subtype identifier from a license recordfor the machine. The program instructions executable by the processingcircuit are further configured to perform operations including queryinga processing unit capability of the machine and enabling the softwareimage with the allocation of the processing units based on verifyingthat a software image identifier of the software image matches thesoftware image type from the processing unit subtype identifier and theprocessing unit capability of the machine meets the allocation of theprocessing units from the processing unit subtype. Advantages caninclude allocating sufficient processing resources to support executionof a particular software image and retaining processing unit capabilityfor execution of additional software images.

According to a non-limiting embodiment, a computer-implemented methodincludes receiving a software image file set and a capacity requirementat a software image distribution system, generating a software imagebased on the software image file set, generating a license record basedon the capacity requirement, providing the software image and thelicense record to an external interface of the software imagedistribution system, and triggering an installation action, by thesoftware image distribution system, on to a machine based on a requestof an ordering system. Advantages can include controlling software imagedistribution with capacity requirements to be allocated at deployment.

In addition to one or more of the features described above, or as analternative to any of the foregoing embodiments, further embodiments mayinclude where triggering the installation action further includessending the software image and the license record to the machine.Advantages can include transmission of the software image and thelicense record to the machine.

In addition to one or more of the features described above, or as analternative to any of the foregoing embodiments, further embodiments mayinclude sending a completion notification including a payment requestfrom the software image distribution system to the ordering system.Advantages can include controlling a completion process.

In addition to one or more of the features described above, or as analternative to any of the foregoing embodiments, further embodiments mayinclude receiving a payment at the software image distribution systemresponsive to the payment request and sending a portion of the paymentfrom the software image distribution system to a source system of thesoftware image file set. Advantages can include distributed transactioncontrol.

In addition to one or more of the features described above, or as analternative to any of the foregoing embodiments, further embodiments mayinclude receiving, at the software image distribution system, aninstallation complete signal from the machine based on installation andenablement of the software image on the machine and triggering acompletion action responsive to the installation complete signal.Advantages can include controlling a completion process.

Additional technical features and benefits are realized through thetechniques of the present invention. Embodiments and aspects of theinvention are described in detail herein and are considered a part ofthe claimed subject matter. For a better understanding, refer to thedetailed description and to the drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

The specifics of the exclusive rights described herein are particularlypointed out and distinctly claimed in the claims at the conclusion ofthe specification. The foregoing and other features and advantages ofthe embodiments of the invention are apparent from the followingdetailed description taken in conjunction with the accompanying drawingsin which:

FIG. 1 is a block diagram illustrating a computer system in accordancewith various embodiments of the invention;

FIG. 2 is a block diagram of a system according to a non-limitingembodiment;

FIG. 3 is a flow diagram illustrating an assignment and verificationprocess according to a non-limiting embodiment;

FIG. 4 is a block diagram illustrating logical partition selection poolsaccording to a non-limiting embodiment;

FIG. 5 is a flow diagram illustrating an initial program load evaluationprocess according to a non-limiting embodiment;

FIG. 6 is a flow diagram illustrating a bootloader evaluation processaccording to a non-limiting embodiment;

FIG. 7 is a flow diagram illustrating a configuration process accordingto a non-limiting embodiment;

FIG. 8 is a flow diagram illustrating a method according to anon-limiting embodiment;

FIG. 9 is a flow diagram illustrating a distribution process accordingto a non-limiting embodiment; and

FIG. 10 is a flow diagram illustrating a method according to anon-limiting embodiment.

The diagrams depicted herein are illustrative. There can be manyvariations to the diagram or the operations described therein withoutdeparting from the spirit of the invention. For instance, the actionscan be performed in a differing order or actions can be added, deletedor modified. Also, the term “coupled” and variations thereof describeshaving a communications path between two elements and does not imply adirect connection between the elements with no interveningelements/connections between them. All of these variations areconsidered a part of the specification.

DETAILED DESCRIPTION

Various embodiments of the invention are described herein with referenceto the related drawings. Alternative embodiments of the invention can bedevised without departing from the scope of this invention. Variousconnections and positional relationships (e.g., over, below, adjacent,etc.) are set forth between elements in the following description and inthe drawings. These connections and/or positional relationships, unlessspecified otherwise, can be direct or indirect, and the presentinvention is not intended to be limiting in this respect. Accordingly, acoupling of entities can refer to either a direct or an indirectcoupling, and a positional relationship between entities can be a director indirect positional relationship. Moreover, the various tasks andprocess steps described herein can be incorporated into a morecomprehensive procedure or process having additional steps orfunctionality not described in detail herein.

The following definitions and abbreviations are to be used for theinterpretation of the claims and the specification. As used herein, theterms “comprises,” “comprising,” “includes,” “including,” “has,”“having,” “contains” or “containing,” or any other variation thereof,are intended to cover a non-exclusive inclusion. For example, acomposition, a mixture, process, method, article, or apparatus thatcomprises a list of elements is not necessarily limited to only thoseelements but can include other elements not expressly listed or inherentto such composition, mixture, process, method, article, or apparatus.

Additionally, the term “exemplary” is used herein to mean “serving as anexample, instance or illustration.” Any embodiment or design describedherein as “exemplary” is not necessarily to be construed as preferred oradvantageous over other embodiments or designs. The terms “at least one”and “one or more” can include any integer number greater than or equalto one, i.e. one, two, three, four, etc. The terms “a plurality” caninclude any integer number greater than or equal to two, i.e. two,three, four, five, etc. The term “connection” can include both anindirect “connection” and a direct “connection.”

The terms “about,” “substantially,” “approximately,” and variationsthereof, are intended to include the degree of error associated withmeasurement of the particular quantity based upon the equipmentavailable at the time of filing the application. For example, “about”can include a range of ±8% or 5%, or 2% of a given value.

For the sake of brevity, conventional techniques related to making andusing aspects of the invention may or may not be described in detailherein. In particular, various aspects of computing systems and specificcomputer programs to implement the various technical features describedherein are well known. Accordingly, in the interest of brevity, manyconventional implementation details are only mentioned briefly herein orare omitted entirely without providing the well-known system and/orprocess details.

Turning now to an overview of technologies that are more specificallyrelevant to aspects of the invention, in computer systems, processingunits (PUs) can include computer system resources that supportprocessing system operation, such as processor chips, I/O cards, andmemory used by application software. PUs are typically enabled based onoperating system capability rather than dynamically adjusted based onplanned workloads. Computer system configurations that statically assignPU capacity may reduce PU capacity available to other workloads as newworkloads (e.g., software images) are installed on a machine. This canlimit the performance characteristics of new workloads that may beinstalled after the machine is deployed.

Turning now to an overview of the aspects of the invention, one or moreembodiments of the invention address the above-described shortcomings ofthe prior art by bundling PU usage with software image types todynamically define pairings of software image type and an allocation ofthe PUs through processing unit subtype identifiers. Embodiments canenable a two-dimensional resource classification to license workloadtypes (PU types) with application types (PU subtypes). An applicationidentifier can be associated with an appliance type, which can bedefined to differ from preexisting infrastructure configurations. Anappliance (also referred to as a software appliance) can be a softwareapplication that includes sufficient operating system support to run onhardware or in a virtual machine. Resources can be assigned and managedthat constrain availability for each subtype such that available PUs aredistributed between multiple subtype definitions to more efficientlypool computer system resources.

The above-described aspects of the invention address the shortcomings ofthe prior art by uniquely creating an application identifier to tieresources to specific appliance types. License records can be used totrack appliance identifiers associated with groups of PUs. PU pools canbe dynamically created and updated responsive to license records. Oncreation of logical partitions on a machine, the PU pools can be usedfor resource selection. Technical effects and benefits can includeconstraining resource utilization through the use of subtypes that limitthe amount of processing resources available to an application of apredetermined type. Advantages can include allocating sufficientprocessing resources to support execution of a particular software imageand retaining processing unit capability for execution of additionalsoftware images, tracking machine-level resource availability ofprocessing units as deployment reduces available resources, trackingavailability of processing units for specific software image types,allocating multiple types of processing resources, sharing of processingunit capabilities across multiple logical partitions, making multipletypes of logical partitions available, and/or constraining multipleparameters of software image deployment. In the context of distributionof software images, advantages can include controlling software imagedistribution with capacity requirements to be allocated at deployment,transmission of the software image and the license record to themachine, distributed transaction control, and/or controlling acompletion process.

With reference now to FIG. 1, a computer system 10 is illustrated inaccordance with a non-limiting embodiment of the present disclosure. Thecomputer system 10 may be based on the z/Architecture, for example,offered by International Business Machines Corporation (IBM). Thearchitecture, however, is only one example of the computer system 10 andis not intended to suggest any limitation as to the scope of use orfunctionality of embodiments described herein. Regardless, computersystem 10 is capable of being implemented and/or performing any of thefunctionality set forth hereinabove.

Computer system 10 is operational with numerous other computing systemenvironments or configurations. Examples of well-known computingsystems, environments, and/or configurations that may be suitable foruse with computer system 10 include, but are not limited to, personalcomputer systems, server computer systems, thin clients, thick clients,cellular telephones, handheld or laptop devices, multiprocessor systems,microprocessor-based systems, set top boxes, programmable consumerelectronics, network PCs, minicomputer systems, mainframe computersystems, and distributed cloud computing environments that include anyof the above systems or devices, and the like. Further, elements of thecomputer system 10 can be incorporated in one or more network devices tosupport computer network functionality, such as a network switch, anetwork router, or other such network support devices.

Computer system 10 may be described in the general context of computersystem-executable instructions, such as program modules, being executedby the computer system 10. Generally, program modules may includeroutines, programs, objects, components, logic, data structures, and soon that perform particular tasks or implement particular abstract datatypes. Computer system 10 may be practiced in distributed cloudcomputing environments where tasks are performed by remote processingdevices that are linked through a communications network. In adistributed computing environment, program modules may be located inboth local and remote computer system storage media including memorystorage devices.

As shown in FIG. 1, computer system 10 is shown in the form of acomputing device, also referred to as a processing device. Thecomponents of computer system may include, but are not limited to, aplurality of processing resources (referred to generally as processingunits 15) which may include one or more processors 16 with one or moreprocessing cores, a memory system 28, and a bus 18 that operably couplesvarious system components including memory system 28 to processors 16.

Bus 18 represents one or more of any of several types of bus structures,including a memory bus or memory controller, a peripheral bus, anaccelerated graphics port, and a processor or local bus using any of avariety of bus architectures. By way of example, and not limitation,such architectures include Industry Standard Architecture (ISA) bus,Micro Channel Architecture (MCA) bus, Enhanced ISA (EISA) bus, VideoElectronics Standards Association (VESA) local bus, and PeripheralComponent Interconnects (PCI) bus.

Computer system 10 may include a variety of computer system readablemedia. Such media may be any available media that are accessible bycomputer system/server 10, and they include both volatile andnon-volatile media, removable and non-removable media.

Memory system 28 can include an operating system (OS) 50, along withcomputer system readable media in the form of volatile memory, such asrandom access memory (RAM) 30 and/or cache memory 32. Computer system 10may further include other removable/non-removable, volatile/non-volatilecomputer system storage media. By way of example only, storage system 34can be provided for reading from and writing to a non-removable,non-volatile magnetic media (not shown and typically called a “harddrive”). Although not shown, a magnetic disk drive for reading from andwriting to a removable, non-volatile magnetic disk (e.g., a “floppydisk”), and an optical disk drive for reading from or writing to aremovable, non-volatile optical disk such as a CD-ROM, DVD-ROM or otheroptical media can be provided. In such instances, each can be connectedto bus 18 by one or more data media interfaces. As will be furtherdepicted and described below, memory system 28 may include at least oneprogram product having a set (e.g., at least one) of program modulesthat are configured to carry out the functions of embodiments of thedisclosure.

The OS 50 controls the execution of other computer programs and providesscheduling, input-output control, file and data management, memorymanagement, and communication control and related services. The OS 50can also include communication protocol support as one or more driversto implement various protocol layers in a protocol stack (e.g.,transmission control protocol/internet protocol (TCP/IP)) to supportcommunication with other computer systems across one or more computernetworks.

The storage system 34 can store a basic input output system (BIOS). TheBIOS is a set of essential routines that initialize and test hardware atstartup, start execution of the OS 50, and support the transfer of dataamong the hardware devices. When the computer system 10 is in operation,at least one of the processors 16 is configured to execute instructionsstored within the storage system 34, to communicate data to and from thememory system 28, and to generally control operations of the computersystem 10 pursuant to the instructions.

Program/utility 40, having a set (at least one) of program modules 42,may be stored in memory system 28 by way of example, and not limitation,as well as the OS 50, one or more application programs, other programmodules, and program data. Each of the operating system, one or moreapplication programs, other program modules, and program data or somecombination thereof, may include an implementation of a networkingenvironment. Program modules 42 generally carry out the functions and/ormethodologies of embodiments of the invention as described herein at anapplication layer level in a communication protocol stack.

Computer system 10 may also communicate with one or more externaldevices 14 such as a keyboard, a pointing device, a display 24, etc.;one or more devices that enable a user to interact with computersystem/server 10; and/or any devices (e.g., network card, modem, etc.)that enable computer system/server 10 to communicate with one or moreother computing devices. Such communication can occur via Input/Output(I/O) interfaces 22. Still yet, computer system 10 can communicate withone or more networks such as a local area network (LAN), a general widearea network (WAN), and/or a public network (e.g., the Internet) vianetwork adapter 20. As depicted, network adapter 20 communicates withthe other components of computer system 10 via bus 18. It should beunderstood that although not shown, other hardware and/or softwarecomponents could be used in conjunction with computer system 10.Examples include, but are not limited to: microcode, device drivers,processing accelerators, external disk drive arrays, RAID systems, tapedrives, data archival storage systems, etc.

The example of FIG. 2 depicts a processor complex 100 as an example of asystem that can implement embodiments of the invention. Multiple logicalpartitions (LPARs) 102A-102Z can be defined to allocate a plurality ofprocessing and memory resources of hosts 104A-104Z to a plurality of OSguests 106A-106Z. Each of the hosts 104A-104Z may provision specificprocessing and memory resources to corresponding OS guests 106A-106Z,and the allocation of resources can change dynamically over a period oftime. In the example of FIG. 2, host 104A and host 104B are allocated toprocessor chips 108A of a processing node 110A in a processor drawer112A. Each of the hosts 104A and 104B may have specific portions of mainmemory 114A allocated for respective OS guests 106A and 106B with sharedaccess to processor chips 108A and a system controller 116A. Theprocessor drawer 112A is an example of a physical partition that cangroup multiple processing nodes 110A-110N in close physical proximity.OS guests 106G and 106H can access processing and memory resources ofprocessing node 110N in processor drawer 112A through respective hosts104G and 104H, which may include dedicated space in main memory 114N andshared access to processor chips 108N and system controller 116N.

Processor drawer 112N within processor complex 100 can share a samemachine hypervisor 118 as other drawers, such as processor drawer 112A,to support shared access and resource allocation throughout theprocessor complex 100. Processor drawer 112N includes processing nodes110Z and 110Z′. Host 104Y and host 104Z are allocated to processor chips108Z of processing node 110Z in processor drawer 112N. Each of the hosts104Y and 104Z may have specific portions of main memory 114Z allocatedfor respective OS guests 106Y and 106Z with shared access to processorchips 108Z and system controller 116Z. Host 104Z′ can be allocated toprocessor chips 108Z′ in processing node 110Z′ in processor drawer 112Nwith main memory 114Z′ and system controller 116Z′. Rather than a singleOS guest, LPAR 102Z′ can allocate a plurality of second-level gueststhat share access to host 104Z′ through a hypervisor 120, including OSguest 106A′ and 106B′-106Z′.

The processor chips 108A-108Z′ can each include multiple processors 122and cache 124. Although a specific configuration is depicted in FIG. 2,it will be understood that any number of drawers, nodes, processorchips, memory systems, hosts, and/or guests can be implemented inembodiments as described herein. Move operations and other interactionsmay be performed using operations managed, for example, by one or moreI/O cards 130 in I/O drawers 132A, 132B, up to 132N. The processors 122,processor chips 108, memory 114, I/O cards 130, and/or other processingsystem resources depicted in FIG. 2 are examples of processing units 115that can be assigned, tracked, and/or otherwise managed by embodiments.Further, embodiments may manage processing units 115 at a physicallevel, for instance, through machine hypervisor 118 or at a logicallevel, such as through hypervisor 120. Further, firmware and/or otherresources (not depicted) can manage partitioning and pooling of theprocessing units 115 are further described herein.

FIG. 3 depicts a flow diagram illustrating an assignment andverification process 200 according to a non-limiting embodiment. Theprocess 200 can be performed by a computer system management component,such as the machine hypervisor 118 of FIG. 2. Although described inreference to the processor complex 100 of FIG. 2, the process 200 may beperformed by the computer system 10 of FIG. 1 or other systemconfigurations not depicted.

At block 202, an identifier can be assigned to an application as anapplication ID. The application ID can be a unique ID associated with asoftware image type to define allocation limits of one or more of theprocessing units 115 of FIG. 2.

At block 204, a dimensional classifier can be assigned to a licenserecord, which can include assigning a workload classifier or processingunit type in a first dimension 206 and assigning an application type(e.g., an application ID) in a second dimension 208. For example, theworkload classifier can define allocations of the processing units 115of FIG. 2 as using one or more of: a central processor (CP), integratedfacility for Linux (IFL), z-information processor (ZIP), internalcoupling facility (ICF), system assist processor (SAP), integratedfirmware processor (IFP), and/or other types of processing units 115,such as memory resources, I/O card resources, and the like. Theapplication ID may define a software image type that uses a subset ofthe processing units 115 defined in the second dimension 208. Licenserecords can hold various information to support time constrainedassignment of processing units 115. For example, a license record caninclude information such as a serial number, a lifetime, a processingunit type, an application ID, and signature to confirm that the licenserecord is uncorrupted. Table 1 depicts an example machine configurationafter a license record has been installed with a processing unit type of3 IFL and an application ID of 5.

TABLE 1 Example machine configuration Processing Processing Unit TypeUnit Subtype Amount IFL 0 10 ZIP 0 2 CP 0 1 IFL 5 3Thus, an application ID with a value of 5 can correspond with aprocessing unit subtype of 5, where three IFL processing units areassigned, as opposed to a processing unit type of IFL with processingunit subtype of 0, which would default in assigning ten IFL processingunits.

At block 210, tracking of available resources is performed in the firstdimension 206 and the second dimension 208, for instance, using storage212 to determine whether resources are available for further assignment.The tracking can be performed as license records are created withfurther evaluations performed at activation time.

At block 214, license record evaluation is performed. License recordevaluation can include a verification 216 to determine whether anappliance type specified in an appliance ID matches an ID stored in alicense record. If a match is not found, the process 200 can revert totracking of available resources at block 210. If a match is identifiedbetween an application ID and an ID stored in a license record, at block218, individually used resources are subtracted from both the firstdimension 206 and the second dimension 208 at activation time, with acorresponding update made to storage 212.

FIG. 4 depicts an example of processing unit pooling 300 to supportmultiple logical partitions, such as LPARs 102 of FIG. 2. In the exampleof FIG. 4, processing unit pool 302 of processing unit subtype 5 (e.g.,appliance ID of 5) includes a first processing unit group 304 of IFL,with processing unit subtype 5, having one IFL processing unit assigned.The processing unit pool 302 also includes a second processing unitgroup 306 of IFL, with processing unit subtype 5, having three IFLprocessing units assigned. Processing unit pool 308 is an example of aCP subtype-0 pool having a processing unit group 310 of seven CPprocessing units assigned. Processing unit pool 312 is an example of anIFL subtype-0 pool having a processing unit group 314 of five IFLprocessing units assigned. Processing unit pool 316 is an example of anIFL subtype-3 pool (e.g., appliance ID of 3) having a processing unitgroup 318 of eight IFL processing units assigned.

The processing unit pools 302, 308, 312, and 316 can be further groupedby logical partitions that can assign processing units 315 depending onwhich logical partitions are active. For example, LPAR 320 can includeprocessing unit pools 302, 308, and 312, while LPAR 330 may includeprocessing unit pools 308, 312, and 316. Thus, LPAR 320 can make 9 IFLprocessing units available (1+3+5) and 7 CP processing units available,while LPAR 330 makes 13 IFL processing units available (5+8) and 7 CPprocessing units available. IFL subtype-0 and CP subtype-0 may bothappear as available pools until assigned to a dedicated LPAR, such asLPAR 320 or LPAR 330. If there is an insufficient number of processingunits 315 of a desired type available, one of the LPARs 320, 330 may beblocked from activation or processing units 315 may be shared betweenLPARs 320, 330 where an overlap exists (e.g., processing unit pools 308,312).

FIG. 5 depicts a flow diagram illustrating an evaluation process 500according to a non-limiting embodiment. The evaluation process 500 is anexample of an appliance LPAR evaluation for an initial program load. Forexample, the evaluation process 500 may be performed by the machinehypervisor 118 of FIG. 2 when configuring LPAR 320 or LPAR 330 of FIG.4. On an initial program load start 502, a verification 504 (blocks 506and 508) can count the processing units 315 of FIG. 4 for processingunit pools (including processing unit subtypes, e.g., processing unittype.application classifier), such as processing unit pools 302, 308,312, and 316 of FIG. 4. At block 506, a check can be performed todetermine whether an overall allowed number in a processing unit pool isless than or equal to the sum of the number of active processing unitsof an associated processing unit subtype plus a number of processingunits in the same configuration. If so, then the process 500 advances toblock 508; otherwise, the process 500 can abort with an error code atblock 510.

At block 508, a check is performed to determine whether more processingunit pools are available for evaluation, and if so, the process 500continues with the verification 504 by evaluating another processingunit pool. If there are no more processing unit pools to evaluate atblock 508, the process 500 can proceed to block 512 to execute a firstbootloader to continue with resource allocation for a software image.

FIG. 6 depicts a flow diagram illustrating an evaluation process 600according to a non-limiting embodiment. Upon starting a first bootloaderat block 602, which may be continued from block 512 of FIG. 5, averification 604 (blocks 606-616) can be performed to check the validityof processing unit pools, such as processing unit pools 302, 308, 312,and 316 of FIG. 4. At block 606, an appliance ID can be queried. Theappliance ID may be part of a signed license record building into asoftware image for an appliance. At block 608, a processing unit poolidentifier (e.g., a processing unit subtype of a processing unit pool)is compared with the appliance ID. If there is a match at block 608, theprocess 600 continues to block 610; otherwise, the process 600 branchesto block 612. At block 612, if the processing unit pool identifier iszero, then the process 600 returns to block 610; otherwise, the process600 branches to block 614. At block 610, a check is performed as towhether the processing unit type of the processing unit pool isapplicable to the appliance, and if so, the process 600 advances toblock 616; otherwise, the process 600 can end with an abort and errorcode at block 614. At block 616, if there are more processing unit poolsto evaluate, the process 600 can continue with verification 604;otherwise, at block 618, a normal initial program load can be executed.

FIG. 7 is a flow diagram illustrating a configuration process 700according to a non-limiting embodiment. The configuration process 700can be partitioned into a plurality of functions performed by multipleentities. For example, entities can include a software image supplier702, a machine 704, a machine supplier 706, and an end user 708. Themachine 704 can be an instance of the computer system 10 of FIG. 1,processor complex 100 of FIG. 2, and/or another computer system (notdepicted). At block 710, the machine supplier 706 can generate and sendan appliance ID to the software image supplier 702. At block 712, thesoftware image supplier 702 can build an appliance including the signedappliance ID received from block 710. The appliance can be aprogram/utility 40 of FIG. 1 for the OS 50 of FIG. 1 or one of the OSguests 106A-106Z′ of FIG. 2, for example.

At block 714, the end user 708 can order an appliance with resourcesfrom the software image supplier 702 or another source. The order can beassociated with configuration data, such as a machine serial numberidentifying the machine 704, resources identifying an allocation ofprocessing units 315 of FIG. 4 needed, an appliance ID, and a duration(e.g., a lifetime before access expires). The appliance ID is an exampleof a software image identifier that can be used by the software imagesupplier 702 to correlate a license record 750 for the end user 708 to aspecific allocation of resources on the machine 704. The software imagesupplier 702 can order 716 a license record 750 from the machinesupplier 706 using the configuration data from the end user 708 incombination with data from the software image supplier 702. Thus, theorder is an order for both hardware and software resources, rather thanonly software resources.

At block 718, the machine supplier 706 can generate the license record750 and provide the license record 750 to the software image supplier702. A simplified example of the license record 750 can include a serialnumber 752, a lifetime 754, a processing unit type 756, an applicationID 758, and a signature 760. The processing unit type 756 andapplication ID 758 may collectively form a processing unit subtypeidentifier 755. At block 720, the software image supplier 702 canpackage the license record 750 and appliance image (e.g., a softwareimage) and provide the license record 750 and appliance image to the enduser 708. At block 722, the end user 708 can initiate a setup of themachine 704 including the license record 750 and appliance image.

At block 724, the machine 704 can install the license record 750, whichmay include performing the process 200 of FIG. 3. The machine 704 canalso create one or more processing unit pools and one or more LPARs,such as processing unit pools 302, 308, 312, and 316 and LPARs 320, 330of FIG. 4. To support installing and activating the appliance, themachine 704 can also perform process 500 of FIG. 5. Upon successfullycompleting block 724, the machine 704 can perform block 726 thatincludes operations of a first bootloader as part of runtimeenforcement. Block 726 can include process 600 of FIG. 6 to get theappliance ID, get a processing unit subtype, and evaluate to eithersuccessfully boot 728 the software image of the appliance or abort 730.

Although a number of steps are illustrated as being performed byparticular entities in FIG. 7, it will be understood that additionalsteps can be added, steps can be performed by other entities, and stepscan be combined or otherwise omitted.

Turning now to FIG. 8, a flow diagram of a process 800 is generallyshown in accordance with an embodiment. The process 800 is describedwith reference to FIGS. 1-8 and may include additional steps beyondthose depicted in FIG. 8. The process 800 can be performed, for example,by a processing circuit of the computer system 10 of FIG. 1, processorcomplex 100 of FIG. 2, and/or another computer system (not depicted).

At block 805, a request can be received to boot a software image (e.g.,an appliance) on a machine 704 that includes a plurality of processingunits 15, 115, 315 having different characteristics. The processingunits 15, 115, 315 can include one or more of processor chips, memoryresources, disk resources, and input/output card resources. Thedifferent characteristics can include, for example, features tuned forgeneral data processing, graphical data processing, input/output dataprocessing, storage operations, network traffic management, and othersuch functions. Some processing units 15, 115, 315 may be optimized tocoordinate with a particular operating system and/or other specificconstraints.

At block 810, a processing unit subtype identifier 755 can be extractedfrom a license record 750 for the machine 704. The processing unitsubtype identifier 755 may include a software image type (e.g.,application ID 758) and an allocation of the processing units 15, 115,315 of the processing unit subtype (e.g., processing unit type 756). Forinstance, the processing unit type 756 may indicate a value of “3 IFL”while the application ID 758 may indicate a value of “5” correspondingto the last line in table 1 in a previous example.

At block 815, a processing unit capability of the machine 704 can bequeried. For instance, a check can be performed to determine whether asufficient number of processing units 15, 115, 315 of the desiredsubtype are available to meet the request.

At block 820, the software image with the allocation of the processingunits 15, 115, 315 can be enabled based on verifying that a softwareimage identifier of the software image matches the software image typefrom the processing unit subtype identifier 755 and the processing unitcapability of the machine 704 meets the allocation of the processingunits 15, 115, 315 from the processing unit subtype 756.

In some embodiments, an indicator of the overall availability of theprocessing units 15, 115, 315 of the machine 704 can be adjusted basedon a plurality of software images with the allocation of the processingunits 15, 115, 315 as deployed. For instance, an indicator of overallavailable processing units 15, 115, 315 of the machine 704 can beadjusted based on the allocation of the processing units 15, 115, 315with a plurality of deployed software images by subtracting the numberof processing units 15, 115, 315 in use by deployed software from thenumber of overall available processing units 15, 115, 315 of the machine704. An indicator of enablement availability of the software image typeof the processing units 15, 115, 315 can be adjusted based on deployingthe software image. Indicators of the overall availability and/orenablement availability may be tracked in the storage 212, for example.

The processing unit capability of the machine 704 can be shared across aplurality of logical partitions (e.g., LPARs 102A-102Z′, 320, 330), andthe software image and one or more other workloads can be configured toexecute in separate logical partitions. The license record 750 can beinstalled on the machine 704 responsive to receiving the software imageand license record data. A processing unit subtype pool identifier canbe created on the machine 704 that associates the allocation of theprocessing units 15, 115, 315 with the software image type. A logicalpartition pool can be created that makes the processing unit subtypepool identifier and one or more identifiers associated with one or moreother workloads available for selection in the logical partitions. Thelicense record data can associate the software image identifier (e.g.,application ID 758), the allocation of the processing units (e.g.,processing unit type 756), a duration (e.g., lifetime 754), and anidentifier of the machine (e.g., serial number 752) responsive to a dataexchange between a plurality of entities, such as the software imagesupplier 702, machine 704, machine supplier 706, and/or end user 708.

FIG. 9 is a flow diagram illustrating a distribution process 900according to a non-limiting embodiment. The distribution process 900 canbe partitioned into a plurality of functions performed by multipleentities. For example, entities can include a source system 902, amachine 904, a software image distribution system 906, and an orderingsystem 908. The source system 902 can be an embodiment of the softwareimage supplier 702 of FIG. 7, the machine 904 can be an embodiment ofthe machine 704 of FIG. 7, and the ordering system 908 can be anembodiment of the end user 708 of FIG. 7. The source system 902 canpackage an application as a software image file set 910 and provide thesoftware image file set 910 with a capacity requirement to the softwareimage distribution system 906. At block 912, the software imagedistribution system 906 can review and evaluate the software image fileset 910, which may be in various formats depending on interfacingrequirements of the software image distribution system 906. The softwareimage distribution system 906 can generate a software image 914 based onthe software image file set 910, for instance, using compilers, linkers,and support software. The software image distribution system 906 cangenerate a license record 916 based on the capacity requirement. Thesoftware image distribution system 906 can add the software image 914and the license record 916 to an external interface 918 of the softwareimage distribution system 906, such as an app store.

The ordering system 908 can include an ordering interface to a buyingapplication 920 to order the software image 914. Ordering of thesoftware image 914 includes ordering of hardware resources to supportexecution of the software image 914. The software image distributionsystem 906 can trigger installation 922 of the software image 914 withthe license record 916 on the machine 904. At block 924, the machine 904can install the software image 914 and enable capacity defined in thelicense record 916 on the machine 904. The machine 904 can signalinstallation completion to the software image distribution system 906.The software image distribution system 906 can handle completion andstart a payment process 926 to request payment from a paymentapplication 928 of the ordering system 908. The payment application 928can send a payment authorization to the software image distributionsystem 906 that receives payment 930 and can send a share of the paymentto the source system 902 that receives the payment 932.

Turning now to FIG. 10, a flow diagram of a process 1000 is generallyshown in accordance with an embodiment. The process 1000 is describedwith reference to FIGS. 1-10 and may include additional steps beyondthose depicted in FIG. 10. The process 1000 can be performed, forexample, by a processing circuit of the computer system 10 of FIG. 1,processor complex 100 of FIG. 2, and/or another computer system (notdepicted). The process 1000 is a variation of the distribution process900 of FIG. 9 primarily from the perspective of the software imagedistribution system 906 of FIG. 9.

At block 1005, the software image distribution system 906 receivessoftware image file set 910 and a capacity requirement. At block 1010,the software image distribution system 906 generates a software image914 based on the software image file set 910. At block 1015, thesoftware image distribution system 906 generates a license record 916based on the capacity requirement. At block 1020, the software imagedistribution system 906 provides the software image 914 and the licenserecord 916 to an external interface of the software image distributionsystem 906 that may be observed by the ordering system 908. At block1025, the software image distribution system 906 triggers aninstallation action on to a machine 904 based on a request of theordering system 908. Triggering the installation action can furtherinclude sending the software image 914 and the license record 916 to themachine 904.

In some embodiments, a completion notification including a paymentrequest can be sent from the software image distribution system 906 tothe ordering system 908. A payment can be received at the software imagedistribution system 906 responsive to the payment request. A portion ofthe payment can be sent from the software image distribution system 906to a source system 902 of the software image file set 910. The softwareimage distribution system 906 can receive an installation completesignal from the machine 904 based on installation and enablement of thesoftware image 914 on the machine 904. A completion action can betriggered responsive to the installation complete signal, such astriggering a payment request to the ordering system 908.

The present invention may be a system, a method, and/or a computerprogram product at any possible technical detail level of integration.The computer program product may include a computer readable storagemedium (or media) having computer readable program instructions thereonfor causing a processor to carry out aspects of the present invention.

The computer readable storage medium can be a tangible device that canretain and store instructions for use by an instruction executiondevice. The computer readable storage medium may be, for example, but isnot limited to, an electronic storage device, a magnetic storage device,an optical storage device, an electromagnetic storage device, asemiconductor storage device, or any suitable combination of theforegoing. A non-exhaustive list of more specific examples of thecomputer readable storage medium includes the following: a portablecomputer diskette, a hard disk, a random access memory (RAM), aread-only memory (ROM), an erasable programmable read-only memory (EPROMor Flash memory), a static random access memory (SRAM), a portablecompact disc read-only memory (CD-ROM), a digital versatile disk (DVD),a memory stick, a floppy disk, a mechanically encoded device such aspunch-cards or raised structures in a groove having instructionsrecorded thereon, and any suitable combination of the foregoing. Acomputer readable storage medium, as used herein, is not to be construedas being transitory signals per se, such as radio waves or other freelypropagating electromagnetic waves, electromagnetic waves propagatingthrough a waveguide or other transmission media (e.g., light pulsespassing through a fiber-optic cable), or electrical signals transmittedthrough a wire.

Computer readable program instructions described herein can bedownloaded to respective computing/processing devices from a computerreadable storage medium or to an external computer or external storagedevice via a network, for example, the Internet, a local area network, awide area network and/or a wireless network. The network may comprisecopper transmission cables, optical transmission fibers, wirelesstransmission, routers, firewalls, switches, gateway computers and/oredge servers. A network adapter card or network interface in eachcomputing/processing device receives computer readable programinstructions from the network and forwards the computer readable programinstructions for storage in a computer readable storage medium withinthe respective computing/processing device.

Computer readable program instructions for carrying out operations ofthe present invention may be assembler instructions,instruction-set-architecture (ISA) instructions, machine instructions,machine dependent instructions, microcode, firmware instructions,state-setting data, configuration data for integrated circuitry, oreither source code or object code written in any combination of one ormore programming languages, including an object oriented programminglanguage such as Smalltalk, C++, or the like, and procedural programminglanguages, such as the “C” programming language or similar programminglanguages. The computer readable program instructions may executeentirely on the user's computer, partly on the user's computer, as astand-alone software package, partly on the user's computer and partlyon a remote computer or entirely on the remote computer or server. Inthe latter scenario, the remote computer may be connected to the user'scomputer through any type of network, including a local area network(LAN) or a wide area network (WAN), or the connection may be made to anexternal computer (for example, through the Internet using an InternetService Provider). In some embodiments, electronic circuitry including,for example, programmable logic circuitry, field-programmable gatearrays (FPGA), or programmable logic arrays (PLA) may execute thecomputer readable program instruction by utilizing state information ofthe computer readable program instructions to personalize the electroniccircuitry, in order to perform aspects of the present invention.

Aspects of the present invention are described herein with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems), and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer readable program instructions.

These computer readable program instructions may be provided to aprocessor of a general purpose computer, special purpose computer, orother programmable data processing apparatus to produce a machine, suchthat the instructions, which execute via the processor of the computeror other programmable data processing apparatus, create means forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks. These computer readable program instructionsmay also be stored in a computer readable storage medium that can directa computer, a programmable data processing apparatus, and/or otherdevices to function in a particular manner, such that the computerreadable storage medium having instructions stored therein comprises anarticle of manufacture including instructions which implement aspects ofthe function/act specified in the flowchart and/or block diagram blockor blocks.

The computer readable program instructions may also be loaded onto acomputer, other programmable data processing apparatus, or other deviceto cause a series of operational steps to be performed on the computer,other programmable apparatus or other device to produce a computerimplemented process, such that the instructions which execute on thecomputer, other programmable apparatus, or other device implement thefunctions/acts specified in the flowchart and/or block diagram block orblocks.

The flowchart and block diagrams in the Figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods, and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof instructions, which comprises one or more executable instructions forimplementing the specified logical function(s). In some alternativeimplementations, the functions noted in the blocks may occur out of theorder noted in the Figures. For example, two blocks shown in successionmay, in fact, be executed substantially concurrently, or the blocks maysometimes be executed in the reverse order, depending upon thefunctionality involved. It will also be noted that each block of theblock diagrams and/or flowchart illustration, and combinations of blocksin the block diagrams and/or flowchart illustration, can be implementedby special purpose hardware-based systems that perform the specifiedfunctions or acts or carry out combinations of special purpose hardwareand computer instructions.

The descriptions of the various embodiments of the present inventionhave been presented for purposes of illustration, but are not intendedto be exhaustive or limited to the embodiments disclosed. Manymodifications and variations will be apparent to those of ordinary skillin the art without departing from the scope and spirit of the describedembodiments. The terminology used herein was chosen to best explain theprinciples of the embodiments, the practical application or technicalimprovement over technologies found in the marketplace, or to enableothers of ordinary skill in the art to understand the embodimentsdescribed herein.

What is claimed is:
 1. A computer-implemented method comprising:receiving a request to boot a software image on a machine comprising aplurality of processing units having different characteristics;extracting a processing unit subtype identifier from a license recordfor the machine, the processing unit subtype identifier comprising asoftware image type and an allocation of the processing units of aprocessing unit subtype; querying a processing unit capability of themachine; and enabling the software image with the allocation of theprocessing units based on verifying that a software image identifier ofthe software image matches the software image type from the processingunit subtype identifier and that the processing unit capability of themachine meets the allocation of the processing units from the processingunit subtype.
 2. The computer-implemented method of claim 1, furthercomprising: adjusting an indicator of overall available processing unitsof the machine based on the allocation of the processing units with aplurality of deployed software images.
 3. The computer-implementedmethod of claim 1, further comprising: adjusting an indicator ofenablement availability of the software image type of the processingunits based on deploying the software image.
 4. The computer-implementedmethod of claim 1, wherein the processing units comprise one or more ofprocessor chips, memory resources, disk resources, and input/output cardresources.
 5. The computer-implemented method of claim 1, wherein theprocessing unit capability of the machine is shared across a pluralityof logical partitions, and the software image and one or more otherworkloads are configured to execute in separate logical partitions. 6.The computer-implemented method of claim 5, further comprising:installing the license record on the machine responsive to receiving thesoftware image and license record data; creating a processing unitsubtype pool identifier on the machine that associates the allocation ofthe processing units with the software image type; and creating alogical partition pool that makes the processing unit subtype poolidentifier and one or more identifiers associated with one or more otherworkloads available for selection in the logical partitions.
 7. Thecomputer-implemented method of claim 6, wherein the license record dataassociates the software image identifier, the allocation of theprocessing units, a duration, and an identifier of the machineresponsive to a data exchange between a plurality of entities.
 8. Asystem comprising: a plurality of processing units on a machine, theprocessing units having different characteristics; and a processingcircuit configured to perform a plurality of operations comprising:receiving a request to boot a software image on the machine; extractinga processing unit subtype identifier from a license record for themachine, the processing unit subtype identifier comprising a softwareimage type and an allocation of the processing units of a processingunit subtype; querying a processing unit capability of the machine; andenabling the software image with the allocation of the processing unitsbased on verifying that a software image identifier of the softwareimage matches the software image type from the processing unit subtypeidentifier and that the processing unit capability of the machine meetsthe allocation of the processing units from the processing unit subtype.9. The system of claim 8, wherein the processing circuit is furtherconfigured to perform operations comprising: adjusting an indicator ofoverall available processing units of the machine based on theallocation of the processing units with a plurality of deployed softwareimages.
 10. The system of claim 8, wherein the processing circuit isfurther configured to perform operations comprising: adjusting anindicator of enablement availability of the software image type of theprocessing units based on deploying the software image.
 11. The systemof claim 8, wherein the processing units comprise one or more of:processor chips, memory resources, disk resources, input/output cardresources.
 12. The system of claim 8, wherein the processing unitcapability of the machine is shared across a plurality of logicalpartitions, and the software image and one or more other workloads areconfigured to execute in separate logical partitions.
 13. The system ofclaim 12, wherein the processing circuit is further configured toperform operations comprising: installing the license record on themachine responsive to receiving the software image and license recorddata; creating a processing unit subtype pool identifier on the machinethat associates the allocation of the processing units with the softwareimage type; and creating a logical partition pool that makes theprocessing unit subtype pool identifier and one or more identifiersassociated with one or more other workloads available for selection inthe logical partitions.
 14. The system of claim 13, wherein the licenserecord data associates the software image identifier, the allocation ofthe processing units, a duration, and an identifier of the machineresponsive to a data exchange between a plurality of entities.
 15. Acomputer program product comprising a computer readable storage mediumhaving program instructions embodied therewith, the program instructionsexecutable by a processing circuit to perform a plurality of operationscomprising: receiving a request to boot a software image on a machinecomprising a plurality of processing units having differentcharacteristics; extracting a processing unit subtype identifier from alicense record for the machine, the processing unit subtype identifiercomprising a software image type and an allocation of the processingunits of a processing unit subtype; querying a processing unitcapability of the machine; and enabling the software image with theallocation of the processing units based on verifying that a softwareimage identifier of the software image matches the software image typefrom the processing unit subtype identifier and that the processing unitcapability of the machine meets the allocation of the processing unitsfrom the processing unit subtype.
 16. The computer program product ofclaim 15, wherein the program instructions executable by the processingcircuit are further configured to perform operations comprising:adjusting an indicator of overall available processing units of themachine based on the allocation of the processing units with a pluralityof deployed software images.
 17. The computer program product of claim15, wherein the program instructions executable by the processingcircuit are further configured to perform operations comprising:adjusting an indicator of enablement availability of the software imagetype of the processing units based on deploying the software image. 18.The computer program product of claim 15, wherein the processing unitcapability of the machine is shared across a plurality of logicalpartitions, and the software image and one or more other workloads areconfigured to execute in separate logical partitions.
 19. The computerprogram product of claim 18, wherein the program instructions executableby the processing circuit are further configured to perform theoperations comprising: installing the license record on the machineresponsive to receiving the software image and license record data;creating a processing unit subtype pool identifier on the machine thatassociates the allocation of the processing units with the softwareimage type; and creating a logical partition pool that makes theprocessing unit subtype pool identifier and one or more identifiersassociated with one or more other workloads available for selection inthe logical partitions.
 20. The computer program product of claim 19,wherein the license record data associates the software imageidentifier, the allocation of the processing units, a duration, and anidentifier of the machine responsive to a data exchange between aplurality of entities.